package com.hoshiicloud.shxping.feign.hystrix;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hoshiicloud.common.rpc.Response;
import com.hoshiicloud.shxping.feign.CustomerFeignService;
import com.hoshiicloud.shxping.param.*;
import com.hoshiicloud.shxping.vo.CartDetailVO;
import com.hoshiicloud.shxping.vo.CartVO;
import com.hoshiicloud.shxping.vo.GoodsBrowseRecordDetailVO;
import com.hoshiicloud.shxping.vo.GoodsBrowseRecordVO;
import org.springframework.stereotype.Component;

import javax.validation.Valid;
import java.util.List;

/**
 * @author yangcheng
 * @version 1.0
 * @title: HystrixCustomerFeignFallback
 * @description: 客户操作微服务FeignClient熔断器
 * @date 2019/6/6 18:19
 * @mail maiboyc@163.com
 */
@Component
public class HystrixCustomerFeignFallback implements CustomerFeignService {

    /**
     * 新增购物车购物信息
     * @param param 加入购物车参数
     * @return  Response
     */
    @Override
    public Response add(CartAddParam param) {
        return Response.failed("新增购物车购物信息失败");
    }

    /**
     * 修改购物车购物信息
     * @param param 更新购物车参数
     * @return Response
     */
    @Override
    public Response update(CartUpdateParam param) {
        return Response.failed("修改购物车购物信息失败");
    }

    /**
     * 更新购物车商品失效状态
     * @param userId 用户ID
     * @return Response
     */
    @Override
    public Response updateCartStatus(String userId) {
        return Response.failed("更新购物车商品失效状态失败");
    }

    /**
     * 删除购物车购物信息
     * @param id 购物车ID
     * @return Response
     */
    @Override
    public Response delete(String id) {
        return Response.failed("删除购物车购物信息失败");
    }

    /**
     * 批量删除购物车购物信息
     * @param ids 购物车IDS
     * @return Response
     */
    @Override
    public Response deleteByIds(List<Long> ids) {
        return Response.failed("批量删除购物车购物信息失败");
    }

    /**
     * 根据用户ID和店铺ID批量删除购物车购物信息
     * @param userId    用户ID
     * @param storeId   店铺ID
     * @return Response
     */
    @Override
    public Response deleteByUserIdAndStoreId(Long userId,Long storeId) {
        return Response.failed("根据用户ID和店铺ID批量删除购物车购物信息失败");
    }

    /**
     * 获取购物车购物信息详情
     * @param id 主键ID
     * @return Response<CartDetailVO>
     */
    @Override
    public Response<CartDetailVO> getDetail(String id) {
        return Response.failed("获取购物车购物信息详情失败");
    }

    /**
     * 获取购物车购物信息列表
     * @param param 查询参数
     * @return Response<List<CartVO>>
     */
    @Override
    public Response<List<CartVO>> getList(@Valid CartQueryParam param) {
        return Response.failed("获取购物车购物信息列表失败");
    }

    /**
     * 分页获取购物车购物信息列表
     * @param param 分页参数
     * @return Response<IPage<CartVO>>
     */
    @Override
    public Response<Page<CartVO>> getPage(CartQueryParam param) {
        return Response.failed("分页获取购物车购物信息列表失败");
    }

    /**
     * 新增商品浏览记录
     * @param param 新增参数
     * @return Response
     */
    @Override
    public Response add(@Valid GoodsBrowseRecordAddParam param) {
        return Response.failed("新增商品浏览记录失败");
    }

    /**
     * 获取商品浏览记录列表
     * @param param 查询参数
     * @return Response<List<GoodsBrowseRecordVO>>
     */
    @Override
    public Response<List<GoodsBrowseRecordVO>> getList(@Valid GoodsBrowseRecordQueryParam param) {
        return Response.failed("获取商品浏览记录列表失败");
    }

    /**
     * 获取商品浏览记录详情
     * @param id 浏览记录ID
     * @return Response<GoodsBrowseRecordDetailVO>
     */
    @Override
    public Response<GoodsBrowseRecordDetailVO> getGoodsBrowseDetail(String id) {
        return Response.failed("获取商品浏览记录详情失败");
    }
}
